An HDD (Hard Disk Drive) and an SSD (Solid State Drive) directly connected to a computer are called “DASs” (Direct Attached Storages), while a network storage connecting these storages via a network increasingly becomes popular. The network storage is broadly classified into an SAN (Storage Area Network) and an NAS (Network Attached Storage). Known SANs include an iSCSI and a fiber channel or the like, in which a storage apparatus is connected to a host machine (a machine that uses the storage) via a network as a block device and a file system is provided on the host machine side. On the other hand, known NASes include an NFS (Network File System) or the like, in which the storage apparatus side is implemented to a file system and a host apparatus can access the storage from upper level for the file system. Accordingly, not only the host machine can be relieved from the load thereon, but also more than one host machines can advantageously share the file systems on the storage.
These network storages communicate mainly by means of Ethernet and use TCP/IP or UDP/IP, which is widely used in the Internet or the like, as a communication protocol. These widespread general-purpose techniques facilitate a network storage use, and the network storages have increased usefulness in terms of storage scalability and serviceability, as compared to a conventional DAS.
Recently, video streaming distribution increasingly becomes popular. For example, a content distribution server called “VOD (Video On Demand) server” performs streaming distribution. Such a content distribution server performs processing of reading video content from its own storage apparatus and transmitting it to a network-connected user terminal. Similarly, a Web server transmits content on a storage to a user terminal. As a communication protocol, for example, TCP/IP-based HTTP or UDP/IP-based RTP for real-time communication is used. Also, in the case of RTP, FEC (Forward Error Correction) or the like is used for error correction.
The speed of devices such as a storage and a network used for such a network storage, a VOD server or a Web server, are remarkably increased. In present, 1 Gbps Ethernet increasingly becomes the mainstream, and 10 Gbps Ethernet comes into use in a data center, or the like. The specifications of the next-generation 40/100 Gbps Ethernet systems are completed, and they are expected to steadily become popular in the future. With regard to a storage, in addition to the increased speed of HDD RAID striping processing (i.e. parallelization), recent SSD transfer performance is remarkably improved, so that a current product alone may have a reading rate over 2 Gbps. With regard to I/F-standard SATA for a storage apparatus, SATA 3.0 having a bandwidth of 6 Gbps is already popular. In view of the above, with regard to a network storage, it is expected that a 10-Gbps-class band is provided in the near future.
As such network storage performance is improved, the processing load on a host CPU controlling the storage increases. Conventionally, attempts have been made to solve the issue by using a technique called “TCP/IP offload engine” (hereinafter “TOE”). TOE is provided with a dedicated processor or dedicated circuit that performs the above-mentioned TCP/IP processing in place of a host CPU, and offloads the TCP/IP processing load on the host CPU. By using this TOE, it is possible to perform faster TCP/IP processing compared to conventional software communication protocol processing and contribute to the improvement of network storage performance.
A storage apparatus or TOE is controlled by a host CPU and it is assumed that data is inputted and outputted via a main memory. Therefore, in input/output of data on the storage to and from a network, data transfer between the storage apparatus (such as an SSD and an HDD) and the TOE is necessarily performed via the main memory.
Application software running on the host CPU which bridges them or data passing processing between the kernel space and user space of OS may cause several copies of transfer data to be generated on the main memory. Further, file system processing is required. In normal file system implementation, therefore, data read or written in sector units of fixed byte length from a storage is transformed into files of arbitrary byte length, and therefore data copy further occurs.
Thus, when data is transferred between a storage apparatus and a TOE, software processing intervenes in a host CPU and therefore the reading or writing in a main memory is required at least once, or multiple memory copies may occur on the main memory by OS, application or file system processing, and therefore the load on the main memory drastically increases.
Conventionally, a host CPU having sufficient processing performance and a high-speed main memory have been provided to cope with such a main memory load. In view of the fact that the transfer rate of a recent network storage is improved to nearly 10 Gbps, it imposes more or less a problem. In particular, upgrading of a host CPU is generally required to improve the main memory capability, and, in the case of a PC, a server or the like, upgrading of the attached chipset is equally required. This particularly exacerbates problems of cost and power consumption.